package com.iplay.thezen.factoryMethod.insteadSingleton;

import java.lang.reflect.Constructor;

/**
 * 通过获得类构造器，然后设置访问权限，生成一个对象，然后提供外部访问，保证内存 中的对象唯一。
 * 当然，其他类也可以通过反射的方式建立一个单例对象，确实如此，但是一 个项目或团队是有章程和规范的，
 * 何况已经提供了一个获得单例对象的方法，为什么还要重 新创建一个新对象呢？除非是有人作恶。
 *
 * @author dangwu
 * @since 2021/9/8 5:21 下午
 */
public class SingletonFactory {
    private static Singleton singleton;

    static {
        try {
            Class cl = Class.forName(Singleton.class.getName());
            Constructor constructor = cl.getDeclaredConstructor();
            constructor.setAccessible(true);
            singleton = (Singleton) constructor.newInstance();
        } catch (Exception e) {

        }
    }

    public static Singleton getSingleton() {
        return singleton;
    }
}
